<?php
/******************************************************************************
*                                                                             *
* Steak Desk v0.2                                                             *
*                                                                             *
* Copyright (c) 2011 Andrew D. Zonenberg.                                     *
* All rights reserved.                                                        *
*                                                                             *
* Redistribution and use in source and binary forms, with or without modifi-  *
* cation, are permitted provided that the following conditions are met:       *
*                                                                             *
*    * Redistributions of source code must retain the above copyright notice  *
*      this list of conditions and the following disclaimer.                  *
*                                                                             *
*    * Redistributions in binary form must reproduce the above copyright      *
*      notice, this list of conditions and the following disclaimer in the    *
*      documentation and/or other materials provided with the distribution.   *
*                                                                             *
*    * Neither the name of the author nor the names of its contributors may be*
*      used to endorse or promote products derived from this software without *
*      specific prior written permission.                                     *
*                                                                             *
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS "AS IS" AND ANY EXPRESS OR IMPLIED *
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF        *
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN     *
* NO EVENT SHALL THE AUTHOR BE HELD LIABLE FOR ANY DIRECT, INDIRECT,          *
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT*
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, *
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF   *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING        *
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS          *
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                *
*                                                                             *
*******************************************************************************/

//WARNING! This script is not well tested and may cause catastrophic failures if run more than once with the same action.
//Use at your own risk and make backups!

require_once('../inc/utils.php');

function main()
{
	//at least have some basic security
	//in the future we want to restrict this to admins rather than just logged-in users
	restricted();

	$action = intval($_GET['action']);
	
	if($action == 1)
		Upgrade1();
}

/**
	@brief MIGRATION #1
	
	From rev 93 to 94, merging Item and InventoryItem tables
 */
function Upgrade1()
{
	header('Content-Type: text/plain');
	
	//Add the new fields to the table
	echo "Adding new fields to schema...\n";
	dbquery('alter table items add `count` int not null after `subcat`');
	dbquery('alter table items add `reorder` int not null after `count`');
	dbquery('alter table items add `stock` bool not null after `reorder`');
		
	//Loop over InventoryItems and update the corresponding Items.
	//Assumes not more than one InventoryItem per Item
	$r = dbquery('select * from inventoryitems');
	$count = mysql_num_rows($r);
	$i=0;
	while($row = mysql_fetch_object($r))
	{
		$i++;
		echo "Updating items ($i of $count)...\n";
		
		//Update the corresponding Item
		dbquery('update items set count=' . $row->count . ', reorder=' . $row->reorder . ', stock=' . $row->stock .
				' where id = ' . $row->item . ' limit 1');
		
		//Delete it once we've gotten to this point
		dbquery('delete from inventoryitems where item = ' . $row->item . ' limit 1');
	}
		
	//By now the InventoryItems table is redundant so get rid of it
	echo "Dropping redundant table\n";
	dbquery('drop table inventoryitems');
	
	echo "Done\n";
}

?>
